﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace WindowsCommonStorage
{
    /// <summary>
    /// ファイルまたはフォルダーの名前が変更された場合、ファイルまたはフォルダーが移動またはコピーされた場合の動作と、目的の場所に同じ名前の既存のファイルまたはフォルダーが存在する場合の動作を指定します。
    /// </summary>
    public enum CommonNameCollisionOption
    {
        /// <summary>
        /// ファイルまたはフォルダーの名前に数字を追加することで、一意の名前を自動的に生成します。
        /// </summary>
        GenerateUniqueName,

        /// <summary>
        /// 既存のファイルまたはフォルダーを置き換えます。アプリケーションで、既存のファイルまたはフォルダーを含む場所へのアクセス権限が必要です。場所へのアクセスは、たとえば、アプリケーションのマニフェストで宣言する機能によって、またはファイルの選択機能をユーザーが使用して、複数の方法で許可することができます。ファイル
        /// ピッカーを介してアプリケーションにアクセスできる場所のリストを管理するため、Windows.Storage.AccessCache を使用できます。
        /// </summary>
        ReplaceExisting,

        /// <summary>
        /// 既に同じ名前のファイルまたはフォルダーがある場合は、エラーを返し、操作を中止します。
        /// </summary>
        FailIfExists
        
    }

#if NETFX_CORE || WINDOWS_PHONE

    internal static  class CommonNameColltionOptionExchanger
    {
        internal static Windows.Storage.NameCollisionOption Exchange(CommonNameCollisionOption option)
        {

            switch (option)
            {
                case CommonNameCollisionOption.FailIfExists:
                    return Windows.Storage.NameCollisionOption.FailIfExists;

                case CommonNameCollisionOption.GenerateUniqueName:
                    return Windows.Storage.NameCollisionOption.GenerateUniqueName;

                case CommonNameCollisionOption.ReplaceExisting:
                    return Windows.Storage.NameCollisionOption.ReplaceExisting;

                default:
                    return Windows.Storage.NameCollisionOption.FailIfExists;
            }
        }
    }
#endif
}
